第一章

####1.1 媒体类型 MIME

MIME 类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分割。

  • HTML 格式的文本文档有 text/html 类型标记
  • 普通的 ASCII 文本文档由 text/plain 类型标记
  • JPEG 版本的图片为 image/jpeg 类型
  • GIF 格式的图片为 iamge/gif 类型
  • Apple 的 QuickTime 电影为 video/quicktime
  • 微软的 PowerPoint 演示文件为 application/vnd.ms-powerpoint

#####1.2 URI

URI(统一资源标识符)用于定位信息资源

1.3 URL

URL (统一资源定位符) 是资源标识符最常见的形式,描述了一台特定服务器上某资源的特定位置。URL 包含三个部分:

  • 第一部分称为方案(scheme),说明了访问资源所使用的协议类型。(通常为 http 协议)
  • 第二部分给出了服务器的因特网地址
  • 其余部分指定了 Web 服务器上某个资源
1.4 URN

URN 统一资源名,作为特定内容的唯一名称使用,与当前资源所在地无关。

1.5 事务

一个事务由一条(客户端)请求命令和一个(服务器)响应结果组成。这种通信是通过 HTTP 报文的格式化数据块进行的。

  • HTTP 方法:包含 GET、PUT、DELETE、POST、HEAD
  • 状态码:包含 200、302、404 等
  • Web 页面中可以包含多个对象
1.6 报文

报文是由一行一行的简单字符串组成的,分为客户端请求报文和服务端的响应报文

报文分为三个部分

  • 起始行:报文的第一行,用来说明要做些什么,在响应报文中说明出现了什么情况
  • 首部字段:起始行后面有零个或多个的首部字段,每个首部字段都包含一个名字和一个值,用冒号(:)来分隔,以一个空行结束
  • 主体:空行之后就是可选主体,包含所有类型的数据

#####1.7 连接

  • TCP/IP:提供了无差错数据传输、按序传输、未分段的数据流
  • 连接、IP地址及端口号

#####1.8 协议版本

#####1.9 Web 的结构组件

  • 代理:位于 client 和 server 之间的 HTTP 中间实体
  • 缓存:HTTP 的仓库
  • 网关:连接其他应用程序的特殊 Web 服务器
  • 隧道:对HTTP 通信报文进行盲转发的特殊服务器
  • Agent 代理:发起自动 HTTP请求得半智能 Web 客户端

第二章 URL

#####2.1 编码机制

编码机制用来在 URL 中表示各种不安全的字符(~ 空格 % 等),通过一种转义表示法来表示不安全的字符,表示法包含一个百分号(%),后面跟着两个表示字符 ASCII 码的十六进制数。

#####2.2 字符限制

#####2.3 方案的世界

  • http 超文本传输协议方案
  • https 与 http 是一对,区别在于 https 使用了 ssl 端到端的加密机制
  • mailto 指向的是 E-mail 地址
  • ftp 文件传输协议,可以用来从 FTP 服务器上下载或向其上载文件,并获取 FTP 服务器上的目录结构内容的列表
  • rtsp、rtspu 是可以通过实时流传输协议解析的音视频媒体资源的标识符,rtspu 中的 u 表示使用 UDP 协议来获取资源
  • file 表示一台指定主机上可直接访问的文件
  • news 用来访问一些特定的文章或新闻组,自身包含的信息不足以对资源进行定位
  • telnet 用于访问交互式业务。表示的并不是对象自身,而是可通过 telnet 协议访问的交互式应用程序

第三章 HTTP 报文

HTTP 报文是在 HTTP 应用程序之间发送的数据块,这些数据块以一些文本形式的元信息开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分。术语用“流入”、“流出”、“上游”及“下游”描述报文方向。

3.1 报文的组成部分

请求报文格式:

1
2
3
4
<method> <request-URL> <version> 请求行
<headers>
<entity-body>

响应报文格式:

1
2
3
4
<version> <status> <reason-phrase> 响应行
<headers>
<entity-body>g

描述:

  • 方法 (method)

    客户端希望服务器对资源的执行动作。如:GET、HEAD、POST

  • 请求 URL (request-URL)

    命名了所请求资源的完整 URL

  • 版本 (version)

    报文中所使用的 HTTP 版本

  • 状态码 (status)

    这三位数字描述了请求过程中所发生的情况

  • 原因短语 (reason-phrase)

    数字状态码的可读版本,包含行终止序列之前的所有文本

  • 首部 (header)

    可以有零个或多个首部,由一个空行结束,表示首部列表的借宿和实体主体部分的开始

  • 实体的主体部分 (entity-body)

    任意数据组成的数据块

3.2 方法
  • GET 通常用于请求服务器发送某个资源
  • HEAD 与 GET 方法类似,但服务器在响应总只返回首部,不返回实体部分
  • PUT 会向服务器写入文档
  • POST 通常用来提交表单
  • TRACE 允许客户端在最终请求发送给服务器时,看看它变成什么样子。追踪原始报文是否,以及如何被毁坏或修改过。主要用于诊断
  • OPTIONS 请求 Web 服务器告知其支持的各种功能
  • DELETE 请求服务器删除请求 URL 所指定的资源

    GET 与 POST 的区别主要是幂等与安全性,链接知乎对于这个问题的讨论。https://www.zhihu.com/question/28586791